package juego.jetsn.comunes;

import java.util.ArrayList;

/**
 * Una Conciencia es una inteligencia artificial capaz de tomar el papel de un jugador
 * 
 */
public class Conciencia {

	/*
	 * A partir de aquí empiezan los atributos de la personalidad de la conciencia.
	 */

	/**
	 * Es una medida de lo que tarda la conciencia en tomar una decisión. 
	 * Cuanto más alto el valor más tarda. Si el valor es muy bajo, la conciencia es
	 * impulsiva.
	 */
	private int reflexividad;

	/**
	 * Es una medida del instinto de autoprotección de una conciencia. 
	 * Un valor alto en esta propiedad dará una conciencia más cautelosa. Un valor bajo
	 * dará una conciencia más propensa a arriesgar.
	 */
	private int preservacion;

	/**
	 * Es una medida de la proactividad de la conciencia. 
	 * Un valor alto da una iniciativa alta, la conciencia emprenderá muchas acciones que la
	 * dirigirán a sus objetivos. Una iniciativa baja configurará una conciencia
	 * reactiva que no emprenderá acciones sino que reaccionará al entorno.
	 */
	private int iniciativa;

	/**
	 * Es una medida de la capacidad de la conciencia para ponerse en el lugar
	 * de los demás. Cuanto más alto sea este valor más intentará la conciencia
	 * pensar como piensa la conciencia con la que está lidiando. Cuanto más
	 * bajo sea este valor, menos intentará conocer a sus interlocutores y más
	 * actuará por su cuenta.
	 */
	private int empatia;

	/**
	 * Es una medida de lo previsible que es una conciencia. Si este valor es
	 * alto, la conciencia no sera innovadora en sus acciones. Repetirá una y
	 * otra vez las acciones que la han beneficiado en el pasado. Si este valor
	 * es bajo, la conciencia tiende a hacer acciones imprevisibles.
	 */
	private int rutina;

	/** Lista de objetivos de una conciencia. @see juego.jetsn.comunes.Objetivo */
	private ArrayList objetivos;

	/**
	 * Estado emocional de la conciencia. Es un estado que se configura según
	 * las caracter�sticas intr�nsecas de la conciencia y la informaci�n que le
	 * llega del mundo exterior.
	 */
	private EstadoEmocional eeActual;

	public Conciencia() {

	}

	/* TODO: decidir la visibilidad de este método. Decidir los parámetros. */
	/**
	 * Genera nuevos objetivos basándose en las características intrínsecas de
	 * la conciencia y en el estado emocional de ese momento.
	 */
	public int generarObjetivos() {
		return -1;

	}

}